package com.wx.datatype;

/**
 * 通过字节码查看各种数据类型在局部变量表中的长度
 * char byte short int boolean float 都是占用一个槽
 * long double 占用两个槽
 * 一个槽是32位
 * @description:
 * @author: wangxun
 * @createDate: 2021/12/14
 * @version: 1.0
 */
public class DataLength {

    public void add(char i ,char j){
        System.out.println(i+j);
    }
    public void add(byte i ,byte j){
        System.out.println(i+j);
    }
    public void add(short i ,short j){
        System.out.println(i+j);
    }
    public void add(int i ,int j){
        System.out.println(i+j);
    }

    public void add(long i ,long j){
        System.out.println(i+j);
    }

    public void add(double i ,double j){
        System.out.println(i+j);
    }

    public void add(float i ,float j){
        System.out.println(i+j);
    }

    public void add(boolean i ,boolean j){
        System.out.println(i==j);
    }

    public void addBL(byte i ,long j){
        /**
         *  0 getstatic #2 <java/lang/System.out : Ljava/io/PrintStream;>
         *  3 iload_1
         *  4 i2l    将int 转化为long 向上转型计算
         *  5 lload_2
         *  6 ladd
         *  7 invokevirtual #4 <java/io/PrintStream.println : (J)V>
         * 10 return
         *
         *
         */
        System.out.println(i+j);
    }

    public void addBF(byte i ,float j){
        /**
         *
         * 0 getstatic #2 <java/lang/System.out : Ljava/io/PrintStream;>
         *  3 iload_1
         *  4 i2f
         *  5 fload_2
         *  6 fadd
         *  7 invokevirtual #6 <java/io/PrintStream.println : (F)V>
         * 10 return
         *  int 转化为 float计算
         *
         */
        System.out.println(i+j);
    }

    public static void main(String[] args) {

    }
}
